package com.cong.modules.sys.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cong.common.vo.AjaxResultVo;
import com.cong.modules.sys.model.SysUser;

public interface UserService extends IService<SysUser> {

	/**
	 * 根据用户名查询用户
	 *
	 * @param username 用户名
	 */
	SysUser getUserByUsername(String username);

	/**
	 * 注册用户
	 *
	 * @param user 用户数据
	 */
	int register(SysUser user);

	/**
	 * 更新最后登录时间
	 *
	 * @param sysUser 用户数据
	 */
	void updateLastLoginTimeByUser(SysUser sysUser);

	/**
	 * 根据条件查询用户列表
	 *
	 * @param user 用户数据
	 */
	List<SysUser> listUsers(SysUser user);

	/**
	 * 根据用户id查询用户
	 *
	 * @param userId 用户ID
	 */
	SysUser getUserByUserId(Long userId);

	/**
	 * 根据userId更新用户信息
	 *
	 * @param sysUser 用户数据
	 */
	int updateUserByUserId(SysUser sysUser);

	/**
	 * 根据用户id分配角色集合
	 *
	 * @param userId 用户ID
	 * @param roleIds 角色ID集合
	 */
	AjaxResultVo addAssignRole(Long userId, Long[] roleIds);

	/**
	 * 导入用户数据
	 *
	 * @param userList 用户集合
	 * @param updateSupport 更新标识
	 * @param operateName 操作人
	 */
	String importUser(List<SysUser> userList, boolean updateSupport, String operateName);

	/**
	 * 根据userId变更用户状态
	 *
	 * @param userId 用户ID
	 */
	int updateUserStatusByUserId(String userId);

	/**
	 * 根据userId删除用户角色关系
	 *
	 * @param userId 用户ID
	 */
	boolean batchRemoveUserAndRole(String userId);

}
